package org.colour.amber.logic.server;

import lombok.extern.slf4j.Slf4j;
import org.colour.amber.dao.PingMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @author jasonfu
 * @date 2024/9/14 09:35
 */
@Slf4j
@Component
public class MySQLChecker implements ServerChecker {

    @Autowired
    PingMapper pingMapper;

    @Override
    public String name() {
        return "MySQL";
    }

    /**
     * 检查数据库连接是否活跃
     *
     * 本方法通过执行一个简单的数据库查询来检测数据库连接是否正常工作
     * 如果查询成功执行，说明连接是活跃的；反之，如果执行过程中出现任何异常，包括数据库连接问题、查询错误等，
     * 则认为连接不活跃
     *
     * @return boolean 表示数据库连接是否活跃，true为活跃，false为不活跃
     */
    @Override
    public boolean isActive() {
        try {
            // 尝试执行一个ping操作来检测数据库连接状态
            return pingMapper.ping();
        } catch (Throwable e) {
            // 当ping操作失败时，记录错误信息并返回false，表示连接不活跃
            log.error("MySQL服务不可用", e);
            return false;
        }
    }
}
